/*
 * Operador.cpp
 *
 *  Created on: 19/11/2013
 *      Author: juanignacio
 */

#include "Operador.h"

Operador::Operador() {
}

Operador::~Operador() {
}

float Operador::norma(float *unVector, int dimension){
	float resultado = 0.0;
	for (int i = 0; i < dimension; i++){
		resultado = resultado + pow(unVector[i], 2);
	}
	resultado = sqrt(resultado);

	return resultado;
}

float Operador::distanciaCoseno(float *unVector, float *otroVector, int dimension){
	/*Usa el metodo del Coseno y compara angulos para medir distancia entre dos vectores
	 * Cuanto mas proximo a 1 el resultado, mas parecidos son los vectores*/
	float resultado = 0.0;

	for (int i = 0; i < dimension; i++){
		resultado = resultado + (unVector[i]*otroVector[i]);
	}
	resultado = resultado/this->norma(unVector, dimension);
	resultado = resultado/this->norma(otroVector, dimension);

	return resultado;
}


void Operador::puntoMedio(float *unVector, float *otroVector, int dimension, float *resultado){

	for (int i = 0; i < dimension; i++){
		resultado[i] = (unVector[i] + otroVector[i])/2;
	}

	return;
}

float* Operador::sumarVectores(float *unVector, float *otroVector, int dimension){

	float *resultado = new float[dimension];
	for (int i = 0; i < dimension; i++){
		resultado[i] = unVector[i] + otroVector[i];
	}

	return resultado;
}
